﻿using System;
using System.ComponentModel.DataAnnotations;

namespace GroupChallenge.Web
{
    // The MetadataTypeAttribute identifies GameMetadata as the class
    // that carries additional metadata for the Game class.
    [MetadataTypeAttribute(typeof(Game.GameMetadata))]
    public partial class Game
    {

        // This class allows you to attach custom attributes to properties
        // of the Game class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class GameMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private GameMetadata()
            {
            }

            public string CurrentQuestionId { get; set; }

            public Nullable<DateTime> EndTime { get; set; }

            public Nullable<int> HighScore { get; set; }

            public string HighScorePlayerNickName { get; set; }

            public Nullable<DateTime> LastChangeTime { get; set; }

            public DateTime StartTime { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PlayerMetadata as the class
    // that carries additional metadata for the Player class.
    [MetadataTypeAttribute(typeof(Player.PlayerMetadata))]
    public partial class Player
    {

        // This class allows you to attach custom attributes to properties
        // of the Player class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PlayerMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PlayerMetadata()
            {
            }

            public Nullable<int> CurrentScore { get; set; }

            public string FullName { get; set; }

            public string NickName { get; set; }

            public Nullable<int> PlayerId { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies QuestionMetadata as the class
    // that carries additional metadata for the Question class.
    [MetadataTypeAttribute(typeof(Question.QuestionMetadata))]
    public partial class Question
    {

        // This class allows you to attach custom attributes to properties
        // of the Question class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class QuestionMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private QuestionMetadata()
            {
            }

            public string Answer1 { get; set; }

            public string Answer2 { get; set; }

            public string Answer3 { get; set; }

            public string Answer4 { get; set; }

            public Nullable<int> CorrectAnswerId { get; set; }

            public string QuestionId { get; set; }

            public string QuestionText { get; set; }

            public Nullable<int> QuestionTypeId { get; set; }

            public string SubmittedByPlayerNickName { get; set; }

            public string WonByPlayerNickName { get; set; }

            public string CategoryName { get; set; }
        }
    }
}
